#ifndef TIMER_H_INCLUDED
#define TIMER_H_INCLUDED

#include <chrono>
#include <glog/logging.h>

namespace RVG
{

class Timer
{
public:
    Timer();
    void Start();
    void Restart();
    void Pause();
    void Resume();
    void Reset();

    double ElapsedMicroSeconds() const;
    double ElapsedSeconds() const;
    double ElapsedMinutes() const;
    double ElapsedHours() const;

    void PrintSeconds() const;
    void PrintMinutes() const;
    void PrintHours() const;

private:
    bool started_;
    bool paused_;
    std::chrono::high_resolution_clock::time_point start_time_;
    std::chrono::high_resolution_clock::time_point pause_time_;
};

}

#endif // TIMER_H_INCLUDED
